diff options
Diffstat (limited to 'app/src/routes/assignments/[assignmentId]')
-rw-r--r-- | app/src/routes/assignments/[assignmentId]/+page.server.ts | 27 | ||||
-rw-r--r-- | app/src/routes/assignments/[assignmentId]/+page.svelte | 25 |
2 files changed, 52 insertions, 0 deletions
diff --git a/app/src/routes/assignments/[assignmentId]/+page.server.ts b/app/src/routes/assignments/[assignmentId]/+page.server.ts new file mode 100644 index 0000000..566dcd9 --- /dev/null +++ b/app/src/routes/assignments/[assignmentId]/+page.server.ts @@ -0,0 +1,27 @@ +import { getAssignmentAndCemetaryById } from "$lib/server/assignments"; +import type { PageServerLoad } from "./$types"; +import { error, redirect } from "@sveltejs/kit"; + +export const load = (async ({ params, url, locals }) => { + if (!locals.user) { + redirect(303, `/login?redirectTo=${encodeURIComponent(url.toString())}`); + } + + const { assignment, cemetaryPlot } = await getAssignmentAndCemetaryById( + locals.dbConn, + +params.assignmentId, + ); + if (!assignment) { + return error(404, `Cemetary plot with id ${params.assignmentId} not found`); + } + console.debug("Found assignment: ", assignment); + if (assignment.gardenerId !== locals.user.id) { + return error(403, "This assignment isn't for you!"); + } + + return { + user: locals.user, + assignment, + cemetaryPlot, + }; +}) satisfies PageServerLoad; diff --git a/app/src/routes/assignments/[assignmentId]/+page.svelte b/app/src/routes/assignments/[assignmentId]/+page.svelte new file mode 100644 index 0000000..0b36a19 --- /dev/null +++ b/app/src/routes/assignments/[assignmentId]/+page.svelte @@ -0,0 +1,25 @@ +<script lang="ts"> + import type { PageProps } from "./$types"; + + let { data }: PageProps = $props(); + + const assignmentDate = $derived(new Intl.DateTimeFormat().format(data.assignment.date)); +</script> + +<svelte:head> + <title>Opgave på {data.cemetaryPlot.address}</title> +</svelte:head> + +<h1>Assignment #{data.assignment.id}</h1> +<p> + Gravstedet, der skal vedligeholdes er ved <span class="address">{data.cemetaryPlot.address}</span + >. +</p> +<p>Vedligeholdelsen skal finde sted <time>{assignmentDate}<time>.</time></time></p> + +<style> + .address, + time { + font-weight: bold; + } +</style> |